package model.Usuario;
import java.util.ArrayList;
import java.util.List;

import model.Publicacion.Pregunta;
import model.Publicacion.Respuesta;
import model.insigniaYlogros.Insignia;
import model.sistema.Sistema;

import org.joda.time.DateTime;


public class UsuarioModerador extends UsuarioRegistrado
{
	private List<ModeracionPregunta> pregModeradas;
	
	private List<ModeracionRespuesta> resModeradas;
	

	
	public UsuarioModerador(Sistema sistema,String nombre, String email){
		super(sistema,nombre,email);
		pregModeradas=new ArrayList<ModeracionPregunta>();
		resModeradas=new ArrayList<ModeracionRespuesta>();
		
		
	}
	
	public void modificarPregunta(Pregunta publicacion, Pregunta nueva) {
		publicacion.modificar(nueva);
		this.pregModeradas.add(new ModeracionPregunta(publicacion,this));
	}
	
	public void modificarRespuesta(Respuesta publicacion, Respuesta nueva) {
		publicacion.modificar(nueva);
		this.resModeradas.add(new ModeracionRespuesta(publicacion,this));
	}
	
	public void eliminarPregunta(Pregunta p) {
		p.eliminar();
		this.pregModeradas.add(new ModeracionPregunta(p,this));
		
	}
	
	

	@Override
	public double puntajePorActividad() {
		
		double x=(preguntas.size()*10)+(pregModeradas.size()*10);
		double y=(respuestas.size()*5)+(resModeradas.size()*5);
		return x+y;
	}

	public void eliminarRespuesta(Respuesta r) {
		
		r.eliminar();
		this.resModeradas.add(new ModeracionRespuesta(r,this));
	}

	@Override
	public double factorDeRegularidad() {
		
		double factor=0.75d;
		boolean cumple=true;
		for(int i=DateTime.now().getMonthOfYear()-5;i<=DateTime.now().getMonthOfYear();i++)
		{
			boolean actividad=algunaPublicacionRealizadaEnMes(i)|algunaPublicacionModeradaEn(i);
			
				cumple=cumple && actividad;
			
		}
		if(cumple)
		{
			factor=1;
		}
		return factor;
	}

	public boolean algunaPublicacionModeradaEn(int numeroMes) {
		
		boolean cumple=false;
		
		for(ModeracionPregunta mp:pregModeradas)
		{
			if(mp.getMesDeModeracion()==numeroMes)
			{
				cumple=true;
			}
		}
		for(ModeracionRespuesta mr:resModeradas)
		{
			if(mr.getMesDeModeracion()==numeroMes)
			{
				cumple=true;
			}
		}
		return cumple;
	}

	public void crearInsignia(Insignia insignia)
	{
		sistema.agregarInsignia(insignia);
	}
	public void agregarModeracionPregunta(ModeracionPregunta m)
	{
		pregModeradas.add(m);
	}
	public void agregarModeracionRespuesta(ModeracionRespuesta m)
	{
		resModeradas.add(m);
	}
	

	
	
}

